<?php


/**
 * 验证身份证号
 * @param $vStr
 * @return bool
 */
function isCreditNo($vStr)
{
    $vCity = array(
        '11','12','13','14','15','21','22',
        '23','31','32','33','34','35','36',
        '37','41','42','43','44','45','46',
        '50','51','52','53','54','61','62',
        '63','64','65','71','81','82','91'
    );

    if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/', $vStr)) return false;

    if (!in_array(substr($vStr, 0, 2), $vCity)) return false;

    $vStr = preg_replace('/[xX]$/i', 'a', $vStr);
    $vLength = strlen($vStr);

    if ($vLength == 18)
    {
        $vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
    } else {
        $vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);
    }

    if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return false;
    if ($vLength == 18)
    {
        $vSum = 0;

        for ($i = 17 ; $i >= 0 ; $i--)
        {
            $vSubStr = substr($vStr, 17 - $i, 1);
            $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11));
        }

        if($vSum % 11 != 1) return false;
    }

    return true;
}
/**
 * 手机端提示函数
 * @param  string $msg 提示信息
 * @param  string $url 跳转地址
 * @param  integer $url 延时时间
 * @param  string $note 提示描述
 */
function fail_jump($msg, $url, $time = 2333, $note = "页面跳转中")
{
    $content = "<link rel='stylesheet' href='/public/static/css/sweet-alert.css'/><script src='/public/static/js/sweet-alert.min.js'></script><script>window.onload=myfun;countDown();function myfun(){swal('$msg','$note','error');delayURL(\"$url\",$time);document.querySelector('.confirm').onclick=function(){location.href='$url'}};function delayURL(url,time){setTimeout(\"top.location.href='\" + url + \"'\",time)}</script>";
    abort(\think\Response::create($content, 'html'));
}
// /*
//  * 截取标题
//  */
// function reStrLen($str, $len=10, $etc='...')
// {
//     $reStr = '';
//     $i = 0;
//     $n = 0.0;
//
//     //字符串的字节数
//     $strlen = strlen($str);
//     while(($n < $len) and ($i < $strlen))
//     {
//         $temp_str = substr($str, $i, 1);
//
//         //得到字符串中第$i位字符的ASCII码
//         $ascnum = ord($temp_str);
//
//         //如果ASCII位高与252
//         if($ascnum >= 252)
//         {
//             //根据UTF-8编码规范，将6个连续的字符计为单个字符
//             $reStr = $reStr.substr($str, $i, 6);
//             //实际Byte计为6
//             $i = $i + 6;
//             //字串长度计1
//             $n++;
//         }
//         else if($ascnum >= 248)
//         {
//             $reStr = $reStr.substr($str, $i, 5);
//             $i = $i + 5;
//             $n++;
//         }
//         else if($ascnum >= 240)
//         {
//             $reStr = $reStr.substr($str, $i, 4);
//             $i = $i + 4;
//             $n++;
//         }
//         else if($ascnum >= 224)
//         {
//             $reStr = $reStr.substr($str, $i, 3);
//             $i = $i + 3 ;
//             $n++;
//         }
//         else if ($ascnum >= 192)
//         {
//             $reStr = $reStr.substr($str, $i, 2);
//             $i = $i + 2;
//             $n++;
//         }
//
//         //如果是大写字母 I除外
//         else if($ascnum>=65 and $ascnum<=90 and $ascnum!=73)
//         {
//             $reStr = $reStr.substr($str, $i, 1);
//             //实际的Byte数仍计1个
//             $i = $i + 1;
//             //但考虑整体美观，大写字母计成一个高位字符
//             $n++;
//         }
//
//         //%,&,@,m,w 字符按1个字符宽
//         else if(!(array_search($ascnum, array(37, 38, 64, 109 ,119)) === FALSE))
//         {
//             $reStr = $reStr.substr($str, $i, 1);
//             //实际的Byte数仍计1个
//             $i = $i + 1;
//             //但考虑整体美观，这些字条计成一个高位字符
//             $n++;
//         }
//
//         //其他情况下，包括小写字母和半角标点符号
//         else
//         {
//             $reStr = $reStr.substr($str, $i, 1);
//             //实际的Byte数计1个
//             $i = $i + 1;
//             //其余的小写字母和半角标点等与半个高位字符宽
//             $n = $n + 0.5;
//         }
//     }
//
//     //超过长度时在尾处加上省略号
//     if($i < $strlen)
//     {
//         $reStr = $reStr.$etc;
//     }
//
//     return $reStr;
// }
/*
 * 生成总订单号
 */
function createNumber()
{
    //订单号码主体（YYYYMMDDHHIISSNNNNNNNN）
    $order_id_main = date('YmdHis') . rand(10000000, 99999999);
    //订单号码主体长度
    $order_id_len = strlen($order_id_main);
    $order_id_sum = 0;
    for ($i = 0; $i < $order_id_len; $i++) {
        $order_id_sum += (int)(substr($order_id_main, $i, 1));
    }
    //唯一订单号码（YYYYMMDDHHIISSNNNNNNNNCC）
    $order_id = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100, 2, '0', STR_PAD_LEFT);

    return $order_id;
}
/*
* 生成店铺订单号码
*/
function make_order($shop_id)
{
    return date('YmdHis', time())
        . mt_rand(10, 99)
        . sprintf('%010d', time() - 946656000)
        . sprintf('%03d', (float)microtime() * 1000)
        . sprintf('%03d', (int)$shop_id % 1000);

}
/*
 * curl=>get获取内容
 */
function curl_get_contents($url,$timeout=30) {
    $curlHandle = curl_init();
    curl_setopt( $curlHandle , CURLOPT_URL, $url );
    curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $curlHandle , CURLOPT_TIMEOUT, $timeout );
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, FALSE);   //屏蔽ssl证书和host
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, FALSE);
    $result = curl_exec( $curlHandle );
    curl_close( $curlHandle );
    return $result;
}
/*
 * 生成随机字符串
 */
function randStr($len=16) {
    $chars='ABDEFGHJKLMNPQRSTVWXYabdefghijkmnpqrstvwxy23456789'; // characters to build the password from
    mt_srand((double)microtime()*1000000*getmypid()); // seed the random number generater (must be done)
    $password='';
    while(strlen($password)<$len)
        $password.=substr($chars,(mt_rand()%strlen($chars)),1);
    return $password;
}
/**
 * @param $nickname
 * @return mixed|string
 * 过滤emoji表情
 */
function removeEmoji($nickname) {

    $clean_text = "";

    // Match Emoticons
    $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
    $clean_text = preg_replace($regexEmoticons, '', $nickname);

    // Match Miscellaneous Symbols and Pictographs
    $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
    $clean_text = preg_replace($regexSymbols, '', $clean_text);

    // Match Transport And Map Symbols
    $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
    $clean_text = preg_replace($regexTransport, '', $clean_text);

    // Match Miscellaneous Symbols
    $regexMisc = '/[\x{2600}-\x{26FF}]/u';
    $clean_text = preg_replace($regexMisc, '', $clean_text);

    // Match Dingbats
    $regexDingbats = '/[\x{2700}-\x{27BF}]/u';
    $clean_text = preg_replace($regexDingbats, '', $clean_text);

    return $clean_text;
}

